Client->"Nova-api": launch instance
Activate "Nova-api"
"Nova-api"->DB: Create initial entry for instance
"Nova-api"->MQ: [rpc.cast] to request new instance
"Nova-api"->Client:Instance request complete
Deactivate "Nova-api"
"Nova-Scheduler"->MQ: Subcribe new instance request
"Nova-Scheduler"->DB: read filtering and weighing info
"Nova-Scheduler"->DB: Read cluster state
"Nova-Scheduler"->DB: Save instance state
"Nova-Scheduler"->MQ: rpc.cast to launch instance
"Nova-compute"->MQ: Subcribe new instance request
"Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info
"Nova-conductor"->MQ: Subcribe new instance request
"Nova-conductor"->DB: Read instance state
"Nova-conductor"->MQ: Publish new instance state
"Nova-compute"->MQ: Subcribe new instance request
"Nova-compute"->"Glance-api": REST get Image URI by Image ID from glance
Activate "Glance-api"
"Glance-api"->"Nova-compute": Return image URI
Deactivate "Glance-api"
"Nova-compute"->"Neutron-server": allocate and configure the network for instance
Activate "Neutron-server"
"Neutron-server"->MQ: Request IP
"Neutron-server"->MQ: Request L2 config
"Neutron-DHCP-agent"->MQ: read Request IP
"Neutron-DHCP-agent"->dnsmasq: allocate IP
dnsmasq->"Neutron-DHCP-agent": reply
"Neutron-DHCP-agent"->MQ: reply IP
"Neutron-server"->MQ:read IP
"Neutron-L2-agent"->MQ: read Request L2 config
"Neutron-L2-agent"->libvirt: config L2
"Neutron-L2-agent"->MQ: reply L2 config
"Neutron-server"->DB: save instance network state
"Neutron-server"->"Nova-compute": Pass network info
Deactivate "Neutron-server"
"Nova-compute"->"Cinder-api": [REST] get volume data
"Cinder-api"->Keystone: Validate token & permissions
Activate "Keystone"
"Cinder-api"<--Keystone: updated auth headers with roles and acl
Deactivate "Keystone"
"Cinder-api"->"Nova-compute": return volume info
"Nova-compute"->libvirt: Start VM
"Nova-compute"->libvirt: Port_update
"Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info
"Nova-conductor"->MQ: Subcribe new instance request
"Nova-conductor"->MQ: Publish new instance state
"Nova-compute"->libvirt: pass volume info
libvirt->ceph_mon: get cluster map
Activate "ceph_mon"
ceph_mon->libvirt: return map
Deactivate "ceph_mon"
libvirt->ceph_osd: mount volume
Client->"Nova-api": Poll instance state
Activate "Nova-api"
"Nova-api"->DB: Read instance state
Activate DB
DB->"Nova-api": Return state
Deactivate DB
"Nova-api"->Client: Return instance state
Deactivate "Nova-api"
Hi,
I've converted syntax for http:// plantuml. com/ , please check if it works for you.
Client->Keystone: Authentication Request
Activate Keystone
Keystone->LDAP: authn
Activate LDAP
Keystone<--LDAP:
Deactivate LDAP
Keystone->"Token Store": Save token
Activate "Token Store"
Keystone<--"Token Store"
Deactivate "Token Store"
Keystone-->Client: Auth token
Deactivate Keystone
Client->"Nova-api": launch instance ->Client: Instance request complete
Activate "Nova-api"
"Nova-api"->DB: Create initial entry for instance
"Nova-api"->MQ: [rpc.cast] to request new instance
"Nova-api"
Deactivate "Nova-api"
"Nova-Scheduler "->MQ: Subcribe new instance request "->DB: read filtering and weighing info "->DB: Read cluster state "->DB: Save instance state "->MQ: rpc.cast to launch instance
"Nova-Scheduler
"Nova-Scheduler
"Nova-Scheduler
"Nova-Scheduler
"Nova-compute"->MQ: Subcribe new instance request "->MQ: Subcribe new instance request "->DB: Read instance state "->MQ: Publish new instance state
"Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info
"Nova-conductor
"Nova-conductor
"Nova-conductor
"Nova-compute"->MQ: Subcribe new instance request ->"Glance- api": REST get Image URI by Image ID from glance api"->" Nova-compute" : Return image URI
"Nova-compute"
Activate "Glance-api"
"Glance-
Deactivate "Glance-api"
"Nova-compute" ->ceph_ mon: get cluster map >"Nova- compute" : return map
Activate "ceph_mon"
ceph_mon-
Deactivate "ceph_mon"
"Nova-compute" ->ceph_ rgw: [REST] request object >"Nova- compute" : return object
Activate "ceph_rgw"
ceph_rgw->ceph_osd: [socket] get object
ceph_rgw-
Deactivate "ceph_rgw"
"Nova-compute" ->"Neutron- server" : allocate and configure the network for instance server" ->MQ: Request IP server" ->MQ: Request L2 config
Activate "Neutron-server"
"Neutron-
"Neutron-
"Neutron- DHCP-agent" ->MQ: read Request IP DHCP-agent" ->dnsmasq: allocate IP >"Neutron- DHCP-agent" : reply DHCP-agent" ->MQ: reply IP
"Neutron-
dnsmasq-
"Neutron-
"Neutron- server" ->MQ:read IP L2-agent" ->MQ: read Request L2 config L2-agent" ->libvirt: config L2 L2-agent" ->MQ: reply L2 config server" ->DB: save instance network state server" ->"Nova- compute" : Pass network info
"Neutron-
"Neutron-
"Neutron-
"Neutron-
"Neutron-
Deactivate "Neutron-server"
"Nova-compute" ->"Cinder- api": [REST] get volume data api"->Keystone: Validate token & permissions api"<-- Keystone: updated auth headers with roles and acl api"->" Nova-compute" : return volume info
"Cinder-
Activate "Keystone"
"Cinder-
Deactivate "Keystone"
"Cinder-
"Nova-compute" ->libvirt: Start VM ->libvirt: Port_update
"Nova-compute"
"Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info "->MQ: Subcribe new instance request "->MQ: Publish new instance state
"Nova-conductor
"Nova-conductor
"Nova-compute" ->libvirt: pass volume info
libvirt->ceph_mon: get cluster map
Activate "ceph_mon"
ceph_mon->libvirt: return map
Deactivate "ceph_mon"
libvirt->ceph_osd: mount volume
"VM-instance" ->neutron_ metadata_ proxy: http rest 169.254.169.254 metadata_ proxy metadata_ proxy-> "nova-api- metadata" : http rest add uuid into X-headers metadata" ->neutron_ metadata_ proxy: metadata_ proxy-> "VM-instance" : return metadata metadata_ proxy
Activate neutron_
neutron_
"nova-api-
neutron_
Deactivate neutron_
Client->"Nova-api": Poll instance state
Activate "Nova-api"
"Nova-api"->DB: Read instance state
Activate DB
DB->"Nova-api": Return state
Deactivate DB
"Nova-api"->Client: Return instance state
Deactivate "Nova-api"