删除API入口:cinder/api/v2/volumes.py
def delete(self, req, id):
"""Delete a volume."""
context = req.environ['cinder.context']
cascade = utils.get_bool_param('cascade', req.params)
LOG.info("Delete volume with id: %s", id)
# Not found exception will be handled at the wsgi level
volume = self.volume_api.get(context, id)
self.volume_api.delete(context, volume, cascade=cascade)
return webob.Response(status_int=http_client.ACCEPTED)
调用self.volume_api.delete:
def delete(self, context, volume,
force=False,
unmanage_only=False,
cascade=False):
context.authorize(vol_policy.DELETE_POLICY, target_obj=volume)
if context.is_admin and context.project_id != volume.project_id:
project_id = volume.project_id
else:
project_id = context.project_id
// 做相关的校验判断
......
// 发送rpc消息
self.volume_rpcapi.delete_volume(context,
volume,
unmanage_only,
cascade)
LOG.info("Delete volume request issued successfully.",
resource=volume)
调用self.volume_rpcapi.delete_volume:
未完待续......