Currently, sshpool.remove function under cinder/ssh_utils.py
is broken. The function tries to locate the passed in
sshclient object inside sshpool.free_items.
However, since the sshclient object is set to “None” at the
beginning, it never finds the object and ends up decrementing
the current size, without actually removing the object.
Made the following changes to fix:
1. Removed reset to ‘None’ so that the attempt to locate object
goes through.
2. Fixed the code to use free_items.remove(ssh) to remove the ssh
object identified instead of free_items.pop(ssh)
3. Also updated the code to decrement current size only if a match
is found in free_items.
4. Added test case to test remove() of an ssh client that is in the
free_items
5. Added test case to test that remove code does not inadvertently
remove an object from the pool if no match is found.
Reviewed: https:/ /review. openstack. org/285687 /git.openstack. org/cgit/ openstack/ cinder/ commit/ ?id=b4f63203ffa 32e6ce2f678cdf6 287621eeff2c59
Committed: https:/
Submitter: Jenkins
Branch: master
commit b4f63203ffa32e6 ce2f678cdf62876 21eeff2c59
Author: Surya Ghatty <email address hidden>
Date: Fri Feb 26 19:49:24 2016 +0000
Fix sshpool.remove code
Currently, sshpool.remove function under cinder/ssh_utils.py
is broken. The function tries to locate the passed in
sshclient object inside sshpool.free_items.
However, since the sshclient object is set to “None” at the
beginning, it never finds the object and ends up decrementing
the current size, without actually removing the object.
Made the following changes to fix: remove( ssh) to remove the ssh
1. Removed reset to ‘None’ so that the attempt to locate object
goes through.
2. Fixed the code to use free_items.
object identified instead of free_items.pop(ssh)
3. Also updated the code to decrement current size only if a match
is found in free_items.
4. Added test case to test remove() of an ssh client that is in the
free_items
5. Added test case to test that remove code does not inadvertently
remove an object from the pool if no match is found.
Change-Id: I4871f4faeb1fc7 90325f274ab21dc 42a8d71fb26
Closes-Bug: #1463557