Gitweb:
http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=8c2220...
Commit: 8c22209121fce621afae6443729896dd8c778ad7
Parent: 2715fa56b7da91dcc9c0e7114bb4928b8896bbbf
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Nov 20 16:02:32 2013 +0100
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Nov 20 16:02:32 2013 +0100
fencing: Add support for options which should be selected from a list of values
Previously, we have supported only strings and booleans; this is first patch that adds
support for entering constrains like select a proper SNMP version from [1, 2c, 3].
---
fence/agents/drac5/fence_drac5.py | 1 +
fence/agents/lib/fencing.py.py | 20 +++++++++++++-------
fence/agents/lpar/fence_lpar.py | 4 +---
3 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/fence/agents/drac5/fence_drac5.py b/fence/agents/drac5/fence_drac5.py
index aa432c2..2c067a7 100644
--- a/fence/agents/drac5/fence_drac5.py
+++ b/fence/agents/drac5/fence_drac5.py
@@ -96,6 +96,7 @@ def define_new_opts():
"help" : "-d, --drac-version=[version] Force DRAC version to use (DRAC
5, DRAC CMC, DRAC MC)",
"required" : "0",
"shortdesc" : "Force DRAC version to use (DRAC 5, DRAC CMC, DRAC
MC)",
+ "choices" : [ "DRAC CMC", "DRAC MC", "DRAC 5"
],
"order" : 1 }
def main():
diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 0ef0934..a19ae20 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -142,13 +142,6 @@ all_opt = {
"required" : "0",
"shortdesc" : "Identity file for ssh",
"order" : 1 },
- "drac_version" : {
- "getopt" : "d:",
- "longopt" : "drac-version",
- "help" : "-d, --drac-version=[version] Force DRAC version to
use",
- "required" : "0",
- "shortdesc" : "Force DRAC version to use",
- "order" : 1 },
"cmd_prompt" : {
"getopt" : "c:",
"longopt" : "command-prompt",
@@ -219,6 +212,7 @@ all_opt = {
"help" : "-d, --snmp-version=[version] Specifies SNMP version to
use",
"required" : "0",
"shortdesc" : "Specifies SNMP version to use (1,2c,3)",
+ "choices" : [ "1", "2c", "3" ],
"order" : 1 },
"community" : {
"getopt" : "c:",
@@ -233,6 +227,7 @@ all_opt = {
"help" : "-b, --snmp-auth-prot=[prot] Set authentication protocol
(MD5|SHA)",
"required" : "0",
"shortdesc" : "Set authentication protocol (MD5|SHA)",
+ "choices" : [ "MD5" , "SHA" ],
"order" : 1},
"snmp_sec_level" : {
"getopt" : "E:",
@@ -241,6 +236,7 @@ all_opt = {
" (noAuthNoPriv|authNoPriv|authPriv)",
"required" : "0",
"shortdesc" : "Set security level
(noAuthNoPriv|authNoPriv|authPriv)",
+ "choices" : [ "noAuthNoPriv", "authNoPriv",
"authPriv" ],
"order" : 1},
"snmp_priv_prot" : {
"getopt" : "B:",
@@ -248,6 +244,7 @@ all_opt = {
"help" : "-B, --snmp-priv-prot=[prot] Set privacy protocol
(DES|AES)",
"required" : "0",
"shortdesc" : "Set privacy protocol (DES|AES)",
+ "choices" : [ "DES", "AES" ],
"order" : 1},
"snmp_priv_passwd" : {
"getopt" : "P:",
@@ -721,6 +718,15 @@ def check_input(device_opt, opt):
else:
options["--ipport"] = 23
+ for opt in device_opt:
+ if all_opt[opt].has_key("choices"):
+ long = "--" + all_opt[opt]["longopt"]
+ possible_values_upper = map (lambda y : y.upper(), all_opt[opt]["choices"])
+ if options.has_key(long):
+ options[long] = options[long].upper()
+ if not options["--" + all_opt[opt]["longopt"]] in
possible_values_upper:
+ fail_usage("Failed: You have to enter a valid choice for %s from the valid
values: %s" % ("--" + all_opt[opt]["longopt"] ,
str(all_opt[opt]["choices"])))
+
return options
def wait_power_status(tn, options, get_power_fn):
diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py
index 6d2c649..1d7e09c 100644
--- a/fence/agents/lpar/fence_lpar.py
+++ b/fence/agents/lpar/fence_lpar.py
@@ -114,6 +114,7 @@ def define_new_opts():
"required" : "0",
"shortdesc" : "Force HMC version to use (3 or 4)",
"default" : "4",
+ "choices" : [ "3", "4" ],
"order" : 1 }
def main():
@@ -139,9 +140,6 @@ def main():
if 0 == options.has_key("--managed"):
fail_usage("Failed: You have to enter name of managed system")
- if 1 == options.has_key("--hmc-version") and
(options["--hmc-version"] != "3" and
options["--hmc-version"] != "4"):
- fail_usage("Failed: You have to enter valid version number: 3 or 4")
-
##
## Operate the fencing device
####