Move RBD calls to a separate threads
Move RBD calls to a separate threads

RBD is a python binding for librados which isn't patched by eventlet.

Making long-running tasks like removing big (~100GB, ~1TB) volumes
blocks eventlet loop and all cinder-volume service hangs
until it finished when rados_connect_timeout is disabled. It makes
cinder-volume services unavailable for a while.

This patch moves all rados calls to a separate python thread which
doesn't block eventlet loop.

Change-Id: Ibaf43858d60e1320c339f2523b5c09c7f7c7f91e
Closes-Bug: #1401335

eharney/cinder,manojhirway/ExistingImagesOnNFS,apporc/cinder,manojhirway/ExistingImagesOnNFS,julianwang/cinder,NetApp/cinder,nexusriot/cinder,saeki-masaki/cinder,tlakshman26/cinder-bug-fix-volume-conversion-full,sasukeh/cinder,potsmaster/cinder,JioCloud/cinder,tlakshman26/cinder-bug-fix-volume-conversion-full,JioCloud/cinder,Hybrid-Cloud/cinder,CloudServer/cinder,apporc/cinder,tlakshman26/cinder-https-changes,nikesh-mahalka/cinder,petrutlucian94/cinder,Datera/cinder,eharney/cinder,scality/cinder,tlakshman26/cinder-https-changes,dims/cinder,Nexenta/cinder,mahak/cinder,phenoxim/cinder,bswartz/cinder,saeki-masaki/cinder,rakeshmi/cinder,nikesh-mahalka/cinder,rakeshmi/cinder,leilihh/cinder,potsmaster/cinder,phenoxim/cinder,Paul-Ezell/cinder-1,duhzecca/cinder,openstack/cinder,duhzecca/cinder,Hybrid-Cloud/cinder,bswartz/cinder,takeshineshiro/cinder,cloudbase/cinder,winndows/cinder,Datera/cinder,CloudServer/cinder,nexusriot/cinder,openstack/cinder,leilihh/cinder,winndows/cinder,tlakshman26/cinder-new-branch,cloudbase/cinder,scottdangelo/RemoveVolumeMangerLocks,ge0rgi/cinder,julianwang/cinder,sasukeh/cinder,j-griffith/cinder,scottdangelo/RemoveVolumeMangerLocks,dims/cinder,j-griffith/cinder,Nexenta/cinder,NetApp/cinder,scality/cinder,takeshineshiro/cinder,mahak/cinder,petrutlucian94/cinder,Paul-Ezell/cinder-1,tlakshman26/cinder-new-branch