public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* cluster: RHEL55 - fencing: #519670 - Support long options from command line
@ 2009-08-28 16:13 Marek Grác
  0 siblings, 0 replies; only message in thread
From: Marek Grác @ 2009-08-28 16:13 UTC (permalink / raw)
  To: cluster-cvs-relay

Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=d4de56c4c8f6d91a98fbb80e9eed8aebc4a8edf9
Commit:        d4de56c4c8f6d91a98fbb80e9eed8aebc4a8edf9
Parent:        66767ee1c9e6d2d9f4cba0b4b5c1fd212222838d
Author:        Marek 'marx' Grac <mgrac@redhat.com>
AuthorDate:    Fri Aug 28 17:28:34 2009 +0200
Committer:     Marek 'marx' Grac <mgrac@redhat.com>
CommitterDate: Fri Aug 28 17:28:34 2009 +0200

fencing: #519670 - Support long options from command line

---
 fence/agents/lib/fencing.py.py |   82 +++++++++++++++++++++++++++++-----------
 1 files changed, 60 insertions(+), 22 deletions(-)

diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 809c2e2..f449037 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -39,23 +39,27 @@ SSL_PATH    = "/usr/lib/fence/telnet_ssl"
 all_opt = {
 	"help"    : {
 		"getopt" : "h",
-		"help" : "-h             Display this help and exit",
+		"longopt" : "help",
+		"help" : "-h, --help                     Display this help and exit",
 		"order" : 54 },
 	"version" : { 
 		"getopt" : "V",
-		"help" : "-V             Output version information and exit",
+		"longopt" : "version",
+		"help" : "-V, --version                  Output version information and exit",
 		"order" : 53 },
 	"quiet"   : {
 		"getopt" : "q",
-		"help" : "-q             Quiet mode",
+		"help" : "",
 		"order" : 50 },
 	"verbose" : {
 		"getopt" : "v",
-		"help" : "-v             Verbose mode",
+		"longopt" : "verbose",
+		"help" : "-v, --verbose                  Verbose mode",
 		"order" : 51 },
 	"debug" : {
 		"getopt" : "D:",
-		"help" : "-D <debugfile> Debugging to output file",
+		"longopt" : "debug-file", 
+		"help" : "-D, --debug-file=<debugfile>   Debugging to output file",
 		"order" : 52 },
 	"agent"   : {
 		"getopt" : "",
@@ -63,15 +67,18 @@ all_opt = {
 		"order" : 1 },
 	"action" : {
 		"getopt" : "o:",
-		"help" : "-o <action>    Action: status, reboot (default), off or on",
+		"longopt" : "action",
+		"help" : "-o, --action=<action>          Action: status, reboot (default), off or on",
 		"order" : 1 },
 	"ipaddr" : {
 		"getopt" : "a:",
-		"help" : "-a <ip>        IP address or hostname of fencing device",
+		"longopt" : "ip",
+		"help" : "-a, --ip=<ip>                  IP address or hostname of fencing device",
 		"order" : 1 },
 	"login" : {
 		"getopt" : "l:",
-		"help" : "-l <name>      Login name",
+		"longopt" : "username",
+		"help" : "-l, --username=<name>          Login name",
 		"order" : 1 },
 	"no_login" : {
 		"getopt" : "",
@@ -83,23 +90,28 @@ all_opt = {
 		"order" : 1 },
 	"passwd" : {
 		"getopt" : "p:",
-		"help" : "-p <password>  Login password or passphrase",
+		"longopt" : "password",
+		"help" : "-p, --password=<password>      Login password or passphrase",
 		"order" : 1 },
 	"passwd_script" : {
 		"getopt" : "S:",
-		"help" : "-S <script>    Script to run to retrieve password",
+		"longopt" : "password-script=",
+		"help" : "-S, --password-script=<script> Script to run to retrieve password",
 		"order" : 1 },
 	"identity_file" : {
 		"getopt" : "k:",
-		"help" : "-k <filename>  Identity file (private key) for ssh ",
+		"longopt" : "identity-file",
+		"help" : "-k, --identity-file=<filename> Identity file (private key) for ssh ",
 		"order" : 1 },
 	"module_name" : {
 		"getopt" : "m:",
-		"help" : "-m <module>    DRAC/MC module name",
+		"longopt" : "module-name",
+		"help" : "-m, --module-name=<module>     DRAC/MC module name",
 		"order" : 1 },
 	"drac_version" : {
 		"getopt" : "d:",
-		"help" : "-d <version>   Force DRAC version to use",
+		"longopt" : "drac-version",
+		"help" : "-d, --drac-version=<version>   Force DRAC version to use",
 		"order" : 1 },
 	"hmc_version" : {
 		"getopt" : "H:",
@@ -108,35 +120,42 @@ all_opt = {
 		"order" : 1 },
 	"ribcl" : {
 		"getopt" : "r:",
-		"help" : "-r <version>   Force ribcl version to use",
+		"longopt" : "ribcl-version",
+		"help" : "-r, --ribcl-version=<version>  Force ribcl version to use",
 		"order" : 1 },
 	"cmd_prompt" : {
 		"getopt" : "c:",
-		"help" : "-c <prompt>    Force command prompt",
+		"longopt" : "command-prompt",
+		"help" : "-c, --command-prompt=<prompt>  Force command prompt",
 		"order" : 1 },
 	"secure" : {
 		"getopt" : "x",
-		"help" : "-x             Use ssh connection",
+		"longopt" : "ssh",
+		"help" : "-x, --ssh                      Use ssh connection",
 		"order" : 1 },
 	"ssl" : {
 		"getopt" : "z",
-		"help" : "-z             Use ssl connection",
+		"longopt" : "ssl",
+		"help" : "-z, --ssl                      Use ssl connection",
 		"order" : 1 },
 	"port" : {
 		"getopt" : "n:",
-		"help" : "-n <id>        Physical plug number on device or name of virtual machine",
+		"longopt" : "plug",
+		"help" : "-n, --plug=<id>                Physical plug number on device or\n" + 
+        "                                        name of virtual machine",
 		"order" : 1 },
 	"switch" : {
 		"getopt" : "s:",
-		"help" : "-s <id>        Physical switch number on device",
+		"longopt" : "switch",
+		"help" : "-s, --switch=<id>              Physical switch number on device",
 		"order" : 1 },
 	"partition" : {
 		"getopt" : "n:",
-		"help" : "-n <id>        Name of the partition",
+		"help" : "-n <id>                        Name of the partition",
 		"order" : 1 },
 	"managed" : {
 		"getopt" : "s:",
-		"help" : "-s <id>        Name of the managed system",
+		"help" : "-s <id>                        Name of the managed system",
 		"order" : 1 },
 	"test" : {
 		"getopt" : "T",
@@ -259,21 +278,40 @@ def process_input(avail_opt):
 	## Prepare list of options for getopt
 	#####
 	getopt_string = ""
+	longopt_list = [ ]
 	for k in avail_opt:
 		if all_opt.has_key(k):
 			getopt_string += all_opt[k]["getopt"]
 		else:
 			fail_usage("Parse error: unknown option '"+k+"'")
 
+		if all_opt.has_key(k) and all_opt[k].has_key("longopt"):
+			if all_opt[k]["getopt"].endswith(":"):
+				longopt_list.append(all_opt[k]["longopt"] + "=")
+			else:
+				longopt_list.append(all_opt[k]["longopt"])
+
 	##
 	## Read options from command line or standard input
 	#####
 	if len(sys.argv) > 1:
 		try:
-			opt, args = getopt.gnu_getopt(sys.argv[1:], getopt_string)
+			opt, args = getopt.gnu_getopt(sys.argv[1:], getopt_string, longopt_list)
 		except getopt.GetoptError, error:
 			fail_usage("Parse error: " + error.msg)
 
+		## Transform longopt to short one which are used in fencing agents
+		#####
+		old_opt = opt
+		opt = { }
+		for o in dict(old_opt).keys():
+			if o.startswith("--"):
+				for x in all_opt.keys():
+					if all_opt[x].has_key("longopt") and "--" + all_opt[x]["longopt"] == o:
+						opt["-" + all_opt[x]["getopt"].rstrip(":")] = dict(old_opt)[o]
+			else:
+				opt[o] = dict(old_opt)[o]
+
 		## Compatibility Layer
 		#####
 		z = dict(opt)


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-08-28 16:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-28 16:13 cluster: RHEL55 - fencing: #519670 - Support long options from command line Marek Grác

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).