cinder.api.v3.attachments module

The volumes attachments API.

class AttachmentsController(ext_mgr=None)

Bases: Controller

The Attachments API controller for the OpenStack API.

allowed_filters = {'attach_status', 'instance_id', 'status', 'volume_id'}
complete(req, id, body)

Mark a volume attachment process as completed (in-use).

create(req, body)

Create an attachment.

This method can be used to create an empty attachment (reserve) or to create and initialize a volume attachment based on the provided input parameters.

If the caller does not yet have the connector information but needs to reserve an attachment for the volume (ie Nova BootFromVolume) the create can be called with just the volume-uuid and the server identifier. This will reserve an attachment, mark the volume as reserved and prevent any new attachment_create calls from being made until the attachment is updated (completed).

The alternative is that the connection can be reserved and initialized all at once with a single call if the caller has all of the required information (connector data) at the time of the call.

NOTE: In Nova terms server == instance, the server_id parameter referenced below is the UUID of the Instance, for non-nova consumers this can be a server UUID or some other arbitrary unique identifier.

Starting from microversion 3.54, we can pass the attach mode as argument in the request body.

Expected format of the input parameter ‘body’:

{
    "attachment":
    {
        "volume_uuid": "volume-uuid",
        "instance_uuid": "null|nova-server-uuid",
        "connector": "null|<connector-object>",
        "mode": "null|rw|ro"
    }
}

Example connector:

{
    "connector":
    {
        "initiator": "iqn.1993-08.org.debian:01:cad181614cec",
        "ip": "192.168.1.20",
        "platform": "x86_64",
        "host": "tempest-1",
        "os_type": "linux2",
        "multipath": false,
        "mountpoint": "/dev/vdb",
        "mode": "null|rw|ro"
    }
}

NOTE all that’s required for a reserve is volume_uuid and an instance_uuid.

returns: A summary view of the attachment object

delete(req, id)

Delete an attachment.

Disconnects/Deletes the specified attachment, returns a list of any known shared attachment-id’s for the effected backend device.

returns: A summary list of any attachments sharing this connection

detail(req)

Return a detailed list of attachments.

index(req)

Return a summary list of attachments.

show(req, id)

Return data about the given attachment.

update(req, id, body)

Update an attachment record.

Update a reserved attachment record with connector information and set up the appropriate connection_info from the driver.

Expected format of the input parameter ‘body’:

{
    "attachment":
    {
        "connector":
        {
            "initiator": "iqn.1993-08.org.debian:01:cad181614cec",
            "ip": "192.168.1.20",
            "platform": "x86_64",
            "host": "tempest-1",
            "os_type": "linux2",
            "multipath": false,
            "mountpoint": "/dev/vdb",
            "mode": "None|rw|ro"
        }
    }
}
versioned_methods = {'complete': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'create': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'delete': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'detail': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'index': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'show': [<cinder.api.openstack.versioned_method.VersionedMethod object>], 'update': [<cinder.api.openstack.versioned_method.VersionedMethod object>]}
wsgi_actions = {'os-complete': 'complete'}
wsgi_extensions = []
create_resource(ext_mgr)

Create the wsgi resource for this controller.