summaryrefslogtreecommitdiffstats
path: root/nova/volume/api.py
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-09-23 09:22:32 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2011-10-11 14:25:04 -0700
commiteb03d47fecd3bfc24243da29ee01679b334a08fe (patch)
tree23243973d2656fecadab6811e0dca6ceb246a7ae /nova/volume/api.py
parente164f3f703026db30937dbbddc63818cef8bd939 (diff)
downloadnova-eb03d47fecd3bfc24243da29ee01679b334a08fe.tar.gz
nova-eb03d47fecd3bfc24243da29ee01679b334a08fe.tar.xz
nova-eb03d47fecd3bfc24243da29ee01679b334a08fe.zip
Remove AoE, Clean up volume code
* Removes Ata Over Ethernet * Adds drivers to libvirt for volumes * Adds initialize_connection and terminate_connection to volume api * Passes connection info back through volume api Change-Id: I1b1626f40bebe8466ab410fb174683293c7c474f
Diffstat (limited to 'nova/volume/api.py')
-rw-r--r--nova/volume/api.py44
1 files changed, 40 insertions, 4 deletions
diff --git a/nova/volume/api.py b/nova/volume/api.py
index d9c082514..34103a1f3 100644
--- a/nova/volume/api.py
+++ b/nova/volume/api.py
@@ -23,7 +23,6 @@ Handles all requests relating to volumes.
from eventlet import greenthread
-from nova import db
from nova import exception
from nova import flags
from nova import log as logging
@@ -180,12 +179,49 @@ class API(base.Base):
if volume['status'] == "available":
raise exception.ApiError(_("Volume is already detached"))
- def remove_from_compute(self, context, volume_id, host):
+ def remove_from_compute(self, context, instance_id, volume_id, host):
"""Remove volume from specified compute host."""
rpc.call(context,
self.db.queue_get_for(context, FLAGS.compute_topic, host),
- {"method": "remove_volume",
- "args": {'volume_id': volume_id}})
+ {"method": "remove_volume_connection",
+ "args": {'instance_id': instance_id,
+ 'volume_id': volume_id}})
+
+ def attach(self, context, volume_id, instance_id, mountpoint):
+ volume = self.get(context, volume_id)
+ host = volume['host']
+ queue = self.db.queue_get_for(context, FLAGS.volume_topic, host)
+ return rpc.call(context, queue,
+ {"method": "attach_volume",
+ "args": {"volume_id": volume_id,
+ "instance_id": instance_id,
+ "mountpoint": mountpoint}})
+
+ def detach(self, context, volume_id):
+ volume = self.get(context, volume_id)
+ host = volume['host']
+ queue = self.db.queue_get_for(context, FLAGS.volume_topic, host)
+ return rpc.call(context, queue,
+ {"method": "detach_volume",
+ "args": {"volume_id": volume_id}})
+
+ def initialize_connection(self, context, volume_id, address):
+ volume = self.get(context, volume_id)
+ host = volume['host']
+ queue = self.db.queue_get_for(context, FLAGS.volume_topic, host)
+ return rpc.call(context, queue,
+ {"method": "initialize_connection",
+ "args": {"volume_id": volume_id,
+ "address": address}})
+
+ def terminate_connection(self, context, volume_id, address):
+ volume = self.get(context, volume_id)
+ host = volume['host']
+ queue = self.db.queue_get_for(context, FLAGS.volume_topic, host)
+ return rpc.call(context, queue,
+ {"method": "terminate_connection",
+ "args": {"volume_id": volume_id,
+ "address": address}})
def _create_snapshot(self, context, volume_id, name, description,
force=False):