~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/virt/libvirt/volume.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
ImportĀ upstreamĀ versionĀ 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from nova.openstack.common import log as logging
26
26
from nova import utils
27
27
from nova.virt.libvirt import config
 
28
from nova.virt.libvirt import utils as virtutils
28
29
 
29
30
LOG = logging.getLogger(__name__)
30
31
FLAGS = flags.FLAGS
36
37
    def __init__(self, connection):
37
38
        self.connection = connection
38
39
 
39
 
    def _pick_volume_driver(self):
40
 
        hypervisor_type = self.connection.get_hypervisor_type().lower()
41
 
        return "phy" if hypervisor_type == "xen" else "qemu"
42
 
 
43
40
    def connect_volume(self, connection_info, mount_device):
44
41
        """Connect the volume. Returns xml for libvirt."""
45
42
        conf = config.LibvirtConfigGuestDisk()
46
43
        conf.source_type = "block"
47
 
        conf.driver_name = self._pick_volume_driver()
 
44
        conf.driver_name = virtutils.pick_disk_driver_name(is_block_dev=True)
48
45
        conf.driver_format = "raw"
49
46
        conf.driver_cache = "none"
50
47
        conf.source_path = connection_info['data']['device_path']
79
76
    def connect_volume(self, connection_info, mount_device):
80
77
        conf = config.LibvirtConfigGuestDisk()
81
78
        conf.source_type = "network"
82
 
        conf.driver_name = self._pick_volume_driver()
 
79
        conf.driver_name = virtutils.pick_disk_driver_name(is_block_dev=False)
83
80
        conf.driver_format = "raw"
84
81
        conf.driver_cache = "none"
85
82
        conf.source_protocol = connection_info['driver_volume_type']
108
105
                  (iscsi_command, out, err))
109
106
        return (out, err)
110
107
 
111
 
    def _iscsiadm_update(self, iscsi_properties, property_key, property_value):
 
108
    def _iscsiadm_update(self, iscsi_properties, property_key, property_value,
 
109
                         **kwargs):
112
110
        iscsi_command = ('--op', 'update', '-n', property_key,
113
111
                         '-v', property_value)
114
 
        return self._run_iscsiadm(iscsi_properties, iscsi_command)
 
112
        return self._run_iscsiadm(iscsi_properties, iscsi_command, **kwargs)
115
113
 
116
114
    @utils.synchronized('connect_volume')
117
115
    def connect_volume(self, connection_info, mount_device):
197
195
        devices = self.connection.get_all_block_devices()
198
196
        devices = [dev for dev in devices if dev.startswith(device_prefix)]
199
197
        if not devices:
200
 
            self._iscsiadm_update(iscsi_properties, "node.startup", "manual")
 
198
            self._iscsiadm_update(iscsi_properties, "node.startup", "manual",
 
199
                                  check_exit_code=[0, 255])
201
200
            self._run_iscsiadm(iscsi_properties, ("--logout",),
202
201
                               check_exit_code=[0, 255])
203
202
            self._run_iscsiadm(iscsi_properties, ('--op', 'delete'),