Exemplo n.º 1
0
    def attach_volume(self, connection_info, instance, mountpoint):
        node = _get_baremetal_node_by_instance_uuid(instance['uuid'])
        ctx = nova_context.get_admin_context()
        pxe_ip = bmdb.bm_pxe_ip_get_by_bm_node_id(ctx, node['id'])
        if not pxe_ip:
            if not CONF.baremetal.use_unsafe_iscsi:
                raise exception.NovaException(_(
                    'No fixed PXE IP is associated to %s') % instance['uuid'])

        mount_device = mountpoint.rpartition("/")[2]
        self._volume_driver_method('connect_volume',
                                   connection_info,
                                   mount_device)
        device_path = connection_info['data']['device_path']
        iqn = _get_iqn(instance['name'], mountpoint)
        tid = _get_next_tid()
        _create_iscsi_export_tgtadm(device_path, tid, iqn)

        if pxe_ip:
            _allow_iscsi_tgtadm(tid, pxe_ip['address'])
        else:
            # NOTE(NTTdocomo): Since nova-compute does not know the
            # instance's initiator ip, it allows any initiators
            # to connect to the volume. This means other bare-metal
            # instances that are not attached the volume can connect
            # to the volume. Do not set CONF.baremetal.use_unsafe_iscsi
            # out of dev/test environments.
            # TODO(NTTdocomo): support CHAP
            _allow_iscsi_tgtadm(tid, 'ALL')
Exemplo n.º 2
0
 def attach_volume(self, connection_info, instance_name, mountpoint):
     node = _get_baremetal_node_by_instance_name(instance_name)
     if not node:
         raise exception.InstanceNotFound(instance_id=instance_name)
     ctx = nova_context.get_admin_context()
     pxe_ip = bmdb.bm_pxe_ip_get_by_bm_node_id(ctx, node['id'])
     if not pxe_ip:
         if not FLAGS.baremetal_use_unsafe_iscsi:
             raise exception.NovaException(
                     "No fixed PXE IP is associated to %s" % instance_name)
     mount_device = mountpoint.rpartition("/")[2]
     conf = self._volume_driver_method('connect_volume',
                                       connection_info,
                                       mount_device)
     LOG.debug("conf=%s", conf)
     device_path = connection_info['data']['device_path']
     volume_id = connection_info['data']['volume_id']
     tid = volume_id + FLAGS.baremetal_iscsi_tid_offset
     mpstr = mountpoint.replace('/', '.').strip('.')
     iqn = '%s:%s-%s' % (FLAGS.baremetal_iscsi_iqn_prefix, tid, mpstr)
     _create_iscsi_export_tgtadm(device_path, tid, iqn)
     if pxe_ip:
         _allow_iscsi_tgtadm(tid, pxe_ip['address'])
     else:
         # unsafe
         _allow_iscsi_tgtadm(tid, 'ALL')
     return True
Exemplo n.º 3
0
    def attach_volume(self, connection_info, instance, mountpoint):
        node = _get_baremetal_node_by_instance_uuid(instance['uuid'])
        ctx = nova_context.get_admin_context()
        pxe_ip = bmdb.bm_pxe_ip_get_by_bm_node_id(ctx, node['id'])
        if not pxe_ip:
            if not CONF.baremetal.use_unsafe_iscsi:
                raise exception.NovaException(
                    _('No fixed PXE IP is associated to %s') %
                    instance['uuid'])

        mount_device = mountpoint.rpartition("/")[2]
        self._volume_driver_method('connect_volume', connection_info,
                                   mount_device)
        device_path = connection_info['data']['device_path']
        iqn = _get_iqn(instance['name'], mountpoint)
        tid = _get_next_tid()
        _create_iscsi_export_tgtadm(device_path, tid, iqn)

        if pxe_ip:
            _allow_iscsi_tgtadm(tid, pxe_ip['address'])
        else:
            # NOTE(NTTdocomo): Since nova-compute does not know the
            # instance's initiator ip, it allows any initiators
            # to connect to the volume. This means other bare-metal
            # instances that are not attached the volume can connect
            # to the volume. Do not set CONF.baremetal.use_unsafe_iscsi
            # out of dev/test environments.
            # TODO(NTTdocomo): support CHAP
            _allow_iscsi_tgtadm(tid, 'ALL')
Exemplo n.º 4
0
 def attach_volume(self, connection_info, instance_name, mountpoint):
     node = _get_baremetal_node_by_instance_name(instance_name)
     if not node:
         raise exception.InstanceNotFound(instance_id=instance_name)
     ctx = nova_context.get_admin_context()
     pxe_ip = bmdb.bm_pxe_ip_get_by_bm_node_id(ctx, node['id'])
     if not pxe_ip:
         if not FLAGS.baremetal_use_unsafe_iscsi:
             raise exception.NovaException(
                 "No fixed PXE IP is associated to %s" % instance_name)
     mount_device = mountpoint.rpartition("/")[2]
     conf = self._volume_driver_method('connect_volume', connection_info,
                                       mount_device)
     LOG.debug("conf=%s", conf)
     device_path = connection_info['data']['device_path']
     volume_id = connection_info['data']['volume_id']
     tid = volume_id + FLAGS.baremetal_iscsi_tid_offset
     mpstr = mountpoint.replace('/', '.').strip('.')
     iqn = '%s:%s-%s' % (FLAGS.baremetal_iscsi_iqn_prefix, tid, mpstr)
     _create_iscsi_export_tgtadm(device_path, tid, iqn)
     if pxe_ip:
         _allow_iscsi_tgtadm(tid, pxe_ip['address'])
     else:
         # unsafe
         _allow_iscsi_tgtadm(tid, 'ALL')
     return True