
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: If I change the existing code to
Kaitlin Rupert wrote: try: for except CIMError, (err_no, err_desc): except Exception, details: Then, I will be able to execute the for loop only one time and the execution will come out with suitable message from verify_error*().
This would save you some indentation, and allow you to catch any unexpected errors in addition to the errors thrown by the delete call.
Good Point!! to include the exception for the other cases apart from the DeleteResourceInPool().
+ 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).
Yeah thats correct the keys() would not come in a particular oder unless sorted.
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.
yeah!! the old patch did not set the resource for the MISSING_POOL case and that was a mistake. This has been included in the new patch that was sent yesterday. -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik@linux.vnet.ibm.com