The request flow for provisioning an Instance goes like this:
1. Dashboard or CLI gets the user credential and does the REST call to Keystone for authentication.
2. Keystone authenticate the credentials and generate & send back auth-token which will be used for sending request to other
Components through REST-call.
3. Dashboard or CLI convert the new instance request specified in launch instance or nova-boot form to REST API
request and send it to nova-api.
4. nova-api receive the request and sends the request for validation auth-token and access permission tokeystone.
5. Keystone validates the token and sends updated auth headers with roles and permissions.
6. nova-api interacts with nova-database.
7. Creates initial db entry for new instance.
8. nova-api sends the [Link] request to nova-scheduler excepting to get updated instance entry with host ID specified.
9. nova-scheduler picks the request from the queue.
[Link]-scheduler interacts with nova-database to find an appropriate host via filtering and weighing.
11. Returns the updated instance entry with appropriate host ID after filtering and weighing.
[Link]-scheduler sends the [Link] request to nova-compute for launching instance on appropriate host .
[Link]-compute picks the request from the queue.
[Link]-compute send the [Link] request to nova-conductor to fetch the instance information such
as host ID and flavor( Ram , CPU ,Disk).
[Link]-conductor picks the request from the queue.
[Link]-conductor interacts with nova-database.
17. Return the instance information.
[Link]-compute picks the instance information from the queue.
[Link]-compute does the REST call by passing auth-token to glance-api to get the Image URI by Image ID from glance
and upload image from image storage.
[Link]-api validates the auth-token with keystone.
[Link]-compute get the image metadata.
[Link]-compute does the REST-call by passing auth-token to Network API to allocate and configure
the network such that instance gets the IP address.
[Link]-server validates the auth-token with keystone.
[Link]-compute get the network info.
[Link]-compute does the REST call by passing auth-token to Volume API to attach volumes to instance.
[Link]-api validates the auth-token with keystone.
[Link]-compute gets the block storage info.
[Link]-compute generates data for hypervisor driver and executes request on
Hypervisor( via libvirt or api).
The table represents the Instance state at various steps during the provisioning :
Status
Task
Power state
Steps
Build
scheduling
None
3-12
Build
networking
None
22-24
Build
Build
block_device_mapping None
spawing
None
Active
none
Running
25-27
28