Deepti B Kalakeri wrote:
Kaitlin Rupert wrote:
>
>> +def verify_rpcs_err_val(virt, server, rpcs_conn, dp_cn, pool_name, +
>> exp_vol_path, dp_inst):
>> + for err_scen in invalid_scen.keys(): + logger.info("Verifying
>> errors for '%s'....", err_scen)
>> + status = FAIL
>> + del_res = [FAIL] + try:
>
> I would put the try / execpt outside of the for loop. This will save
> you some indentation.
I would need the try: except block .. so that I can catch the errors for
each of the invalid delete() scenarios.
Agreed. Your code does something like:
+ for err_scen in invalid_scen.keys():
<snip>
+ try:
<snip>
+
+ except CIMError, (err_no, err_desc):
Why not do:
try:
for
except CIMError, (err_no, err_desc):
except Exception, details:
This would save you some indentation, and allow you to catch any
unexpected errors in addition to the errors thrown by the delete call.
>> + resource = inst_to_mof(res_settings) + del_res =
>> rpcs_conn.DeleteResourceInPool(Resource=resource,
>> + Pool=dp_inst)
>> + else:
>> + exp_err_no = CIM_ERR_INVALID_PARAMETER
>> + if err_scen == "MISSING_RESOURCE":
>> + del_res = rpcs_conn.DeleteResourceInPool(Pool=dp_inst)
>> + elif err_scen == "MISSING_POOL":
>> + del_res = rpcs_conn.DeleteResourceInPool(Resource=resource)
>
> Will invalid_scen.keys() already return the keys in the same order?
> I'm wondering if it is possible for resource to be undefined here
> since it only gets defined if "if not "MISSING" in err_scen:" has
> passed in a prior iteration of the loop.
>
> If "if not "MISSING" in err_scen:" fails the first time through
the
> loop, resource will be undefined.
>
I am not sure I understand the comment here.
If you look at the Python documentation, the keys are returned an
arbitrary order (
http://docs.python.org/library/stdtypes.html#dict.items).
So taking a look at your code, let's say keys() returns err_scen ==
MISSING_POOL the first time through the loop...
if not "MISSING" in err_scen:
This check fails
else:
exp_err_no = CIM_ERR_INVALID_PARAMETER
if err_scen == "MISSING_RESOURCE":
del_res = rpcs_conn.DeleteResourceInPool(Pool=dp_inst)
elif err_scen == "MISSING_POOL":
del_res = rpcs_conn.DeleteResourceInPool(Resource=resource)
This code is executed, but resource hasn't been set yet.
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com