Andy Grover
2014-07-30 21:40:53 UTC
We can just invert the dict and then lookup the key.
Signed-off-by: Andy Grover <***@redhat.com>
---
plugin/smispy/smis.py | 16 +++++-----------
python_binding/lsm/_data.py | 14 +++-----------
2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/plugin/smispy/smis.py b/plugin/smispy/smis.py
index b8b7f8a..31db35f 100644
--- a/plugin/smispy/smis.py
+++ b/plugin/smispy/smis.py
@@ -205,13 +205,6 @@ def _dmtf_init_type_to_lsm(cim_init):
return AccessGroup.INIT_TYPE_UNKNOWN
-def _get_key(dictionary, value):
- keys = [k for k, v in dictionary.items() if v == value]
- if len(keys) > 0:
- return keys[0]
- return None
-
-
def _lsm_tgt_port_type_of_cim_fc_tgt(cim_fc_tgt):
"""
We are assuming we got CIM_FCPort. Caller should make sure of that.
@@ -230,12 +223,13 @@ def _lsm_tgt_port_type_of_cim_fc_tgt(cim_fc_tgt):
def _lsm_init_type_to_dmtf(init_type):
- key = _get_key(_INIT_TYPE_CONV, init_type)
- if key is None:
+ # Invert dict. Assumes values are unique.
+ try:
+ inv_dict = dict((v,k) for k, v in _INIT_TYPE_CONV.iteritems())
+ return inv_dict[init_type]
+ except KeyError:
raise LsmError(ErrorNumber.NO_SUPPORT,
"Does not support provided init_type: %d" % init_type)
- else:
- return key
class SNIA(object):
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index 56e7fd9..77dfb93 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -27,13 +27,6 @@ from json.decoder import WHITESPACE
from _common import get_class, default_property
-def get_key(dictionary, value):
- keys = [k for k, v in dictionary.items() if v == value]
- if len(keys) > 0:
- return keys[0]
- return None
-
-
class DataEncoder(json.JSONEncoder):
"""
Custom json encoder for objects derived form ILsmData
@@ -463,10 +456,9 @@ class Pool(IData):
Convert disk_type to Pool.MEMBER_TYPE_DISK_XXXX
Will return Pool.MEMBER_TYPE_DISK as failback.
"""
- key = get_key(Pool._MEMBER_TYPE_2_DISK_TYPE, disk_type)
- if key or key == 0:
- return key
- return Pool.MEMBER_TYPE_DISK
+ # Invert dict. Assumes values are unique.
+ inv_dict = dict((v,k) for k, v in Pool._MEMBER_TYPE_2_DISK_TYPE.iteritems())
+ return inv_dict.get(disk_type, Pool.MEMBER_TYPE_DISK)
THINP_TYPE_UNKNOWN = 0
THINP_TYPE_THIN = 1
Signed-off-by: Andy Grover <***@redhat.com>
---
plugin/smispy/smis.py | 16 +++++-----------
python_binding/lsm/_data.py | 14 +++-----------
2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/plugin/smispy/smis.py b/plugin/smispy/smis.py
index b8b7f8a..31db35f 100644
--- a/plugin/smispy/smis.py
+++ b/plugin/smispy/smis.py
@@ -205,13 +205,6 @@ def _dmtf_init_type_to_lsm(cim_init):
return AccessGroup.INIT_TYPE_UNKNOWN
-def _get_key(dictionary, value):
- keys = [k for k, v in dictionary.items() if v == value]
- if len(keys) > 0:
- return keys[0]
- return None
-
-
def _lsm_tgt_port_type_of_cim_fc_tgt(cim_fc_tgt):
"""
We are assuming we got CIM_FCPort. Caller should make sure of that.
@@ -230,12 +223,13 @@ def _lsm_tgt_port_type_of_cim_fc_tgt(cim_fc_tgt):
def _lsm_init_type_to_dmtf(init_type):
- key = _get_key(_INIT_TYPE_CONV, init_type)
- if key is None:
+ # Invert dict. Assumes values are unique.
+ try:
+ inv_dict = dict((v,k) for k, v in _INIT_TYPE_CONV.iteritems())
+ return inv_dict[init_type]
+ except KeyError:
raise LsmError(ErrorNumber.NO_SUPPORT,
"Does not support provided init_type: %d" % init_type)
- else:
- return key
class SNIA(object):
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index 56e7fd9..77dfb93 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -27,13 +27,6 @@ from json.decoder import WHITESPACE
from _common import get_class, default_property
-def get_key(dictionary, value):
- keys = [k for k, v in dictionary.items() if v == value]
- if len(keys) > 0:
- return keys[0]
- return None
-
-
class DataEncoder(json.JSONEncoder):
"""
Custom json encoder for objects derived form ILsmData
@@ -463,10 +456,9 @@ class Pool(IData):
Convert disk_type to Pool.MEMBER_TYPE_DISK_XXXX
Will return Pool.MEMBER_TYPE_DISK as failback.
"""
- key = get_key(Pool._MEMBER_TYPE_2_DISK_TYPE, disk_type)
- if key or key == 0:
- return key
- return Pool.MEMBER_TYPE_DISK
+ # Invert dict. Assumes values are unique.
+ inv_dict = dict((v,k) for k, v in Pool._MEMBER_TYPE_2_DISK_TYPE.iteritems())
+ return inv_dict.get(disk_type, Pool.MEMBER_TYPE_DISK)
THINP_TYPE_UNKNOWN = 0
THINP_TYPE_THIN = 1
--
1.9.3
1.9.3