'Create a volume attachment. This requires microversion >= 3.27.
:param context: The nova request context.
:param volume_id: UUID of the volume on which to create the attachment.
:param instance_id: UUID of the instance to which the volume will be
attached.
:param connector: host connector dict; if None, the attachment will
be \'reserved\' but not yet attached.
:returns: a dict created from the
cinderclient.v3.attachments.VolumeAttachment object with a backward
compatible connection_info dict'

@translate_volume_exception
def attachment_create(self, context, volume_id, instance_id, connector=None):

    try:
        attachment_ref = cinderclient(context, '3.27').attachments.create(volume_id, connector, instance_id)
        return _translate_attachment_ref(attachment_ref)
    except cinder_exception.ClientException as ex:
        with excutils.save_and_reraise_exception():
            LOG.error('Create    attachment    failed    for    volume    %(volume_id)s.    Error:    %(msg)s    Code:    %(code)s', {'volume_id': volume_id, 'msg': six.text_type(ex), 'code': getattr(ex, 'code', None)}, instance_uuid=instance_id)
