nova/doc/source/_static/images/attach_volume.dia

35 lines
2.8 KiB
Plaintext

seqdiag {
user; nova-api; nova-conductor; nova-compute; libvirt-driver; os-brick; cinder-api;
edge_length = 300;
span_height = 16;
activation = none;
default_note_color = white;
user -> nova-api [label = "POST /servers/{server_id}/os-volume_attachments"];
nova-api -> nova-compute [label = "RPC call reserve_block_device_name"];
nova-compute -> nova-compute [label = "instance.uuid lock"];
nova-compute ->> nova-conductor [label = "bdm.create"];
nova-compute <<- nova-conductor [label = "return BlockDeviceMapping"];
nova-compute -> libvirt-driver [label = "get_device_name_for_instance"];
nova-compute <- libvirt-driver [label = "Return get_device_name_for_instance"];
nova-api <- nova-compute [label = "Return reserve_block_device_name"];
nova-api -> cinder-api [label = "POST /v3/{project_id}/attachments"];
nova-api <- cinder-api [label = "Return HTTP 200 (without connection_info)"];
nova-api ->> nova-compute [label = "RPC cast attach_volume"];
user <- nova-api [label = "Return HTTP 200 (includes device_name)"];
nova-compute -> nova-compute [label = "instance.uuid lock"];
nova-compute -> os-brick [label = "cinder_backend.uuid lock"];
nova-compute -> cinder-api [label = "PUT /v3/{project_id}/attachments/{attachment_id}"];
nova-compute <- cinder-api [label = "Return HTTP 200 (includes connection_info)"];
nova-compute -> libvirt-driver [label = "attach_volume"];
libvirt-driver -> os-brick [label = "connect_volume"];
os-brick -> os-brick [label = "connect_volume lock"];
libvirt-driver <- os-brick;
libvirt-driver -> libvirt-driver [label = "guest.attach_device"];
libvirt-driver -> libvirt-driver [label = "_build_device_metadata"];
libvirt-driver ->> nova-conductor [label = "instance.save"];
nova-compute <- libvirt-driver [label = "Return attach_volume"];
nova-compute ->> nova-conductor [label = "bdm.save"];
nova-compute -> cinder-api [label = "POST /v3/{project_id}/attachments/{attachment_id}/action (os-complete)"];
nova-compute <- cinder-api [label = "Return HTTP 200"];
}