openstack-manuals/doc/training-guides/module001-ch010-vm-provisioning-indepth.xml
Shilla Saebi 2b8aaaed53 cleanup module001-ch010-vm-provisioning-indepth
Quantum changed to Neutron
added plural receives
changed authenticate to plural
added the before request
added and before authenticates
added the before appropriate
added the before nova-database
return to plural
added the before glance-api
changed upload to plural and added the
changed to "so that the" vs "such the"
changed get to gets plural
added the before instance
added the before hypervisor driver
capitalized api
changed in-depth to In Depth

Add <systemitem> markup

Rework list so that step numbers match the graphic.

Co-Authored-By: Andreas Jaeger <aj@suse.de>

Change-Id: I0e966c18f8783cbd04da813175da1e60d9753b2b
2014-03-06 20:25:23 +01:00

218 lines
6.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="5.0"
xml:id="module001-ch010-vm-provisioning-indepth">
<title>VM provisioning in-depth</title>
<!--
<para>More content to be added...</para>
-->
<para>
The request flow for provisioning an instance goes like
this:
</para>
<!-- The steps here correspond to numbers in figure
figures/image02.png at the end of this file. Do not renumber
the steps -->
<orderedlist>
<listitem>
<!-- 1 -->
<para>The dashboard or CLI gets the user credentials and authenticates
with the Identity Service via REST API.
</para>
<para>
The Identity Service authenticates the user with the user
credentials, and then generates and sends back an auth-token
which will be used for sending the request to other components
through REST-call.
</para>
</listitem>
<listitem>
<!-- 2 -->
<para>
The dashboard or CLI converts the new instance request
specified in <guilabel>launch instance</guilabel> or
<command>nova-boot</command> form to a REST API request and
sends it to <systemitem class="service">nova-api</systemitem>.
</para>
</listitem>
<listitem>
<!-- 3 -->
<para>
<systemitem class="service">nova-api</systemitem> receives the
request and sends a request to the Identity Service for
validation of the auth-token and access permission.
</para>
<para>
The Identity Service validates the token and sends updated
authentication headers with roles and permissions.
</para>
</listitem>
<listitem>
<!-- 4 -->
<para>
<systemitem class="service">nova-api</systemitem> checks for
conflicts with <systemitem
class="service">nova-database</systemitem>.
</para>
<para>
<systemitem class="service">nova-api</systemitem> creates
initial database entry for a new instance.
</para>
</listitem>
<listitem>
<!-- 5 -->
<para>
<systemitem class="service">nova-api</systemitem> sends the
rpc.call request to <systemitem
class="service">nova-scheduler</systemitem> expecting to get
updated instance entry with host ID specified.
</para>
</listitem>
<listitem>
<!-- 6 -->
<para>
<systemitem class="service">nova-scheduler</systemitem> picks
up the request from the queue.
</para>
</listitem>
<listitem>
<!-- 7 -->
<para>
<systemitem class="service">nova-scheduler</systemitem>
interacts with <systemitem
class="service">nova-database</systemitem> to find an
appropriate host via filtering and weighing.
</para>
<para>
<systemitem class="service">nova-scheduler</systemitem>
returns the updated instance entry with the appropriate host
ID after filtering and weighing.
</para>
<para>
<systemitem class="service">nova-scheduler</systemitem> sends
the rpc.cast request to <systemitem
class="service">nova-compute</systemitem> for launching an
instance on the appropriate host.
</para>
</listitem>
<listitem>
<!-- 8 -->
<para>
<systemitem class="service">nova-compute</systemitem> picks up
the request from the queue.
</para>
</listitem>
<listitem>
<para>
<!-- 9 -->
<systemitem class="service">nova-compute</systemitem> sends the
rpc.call request to <systemitem
class="service">nova-conductor</systemitem> to fetch the
instance information such as host ID and flavor (RAM, CPU,
Disk).
</para>
</listitem>
<listitem>
<!-- 10 -->
<para>
<systemitem class="service">nova-conductor</systemitem> picks
up the request from the queue.
</para>
</listitem>
<listitem>
<!-- 11 -->
<para>
<systemitem class="service">nova-conductor</systemitem>
interacts with <systemitem
class="service">nova-database</systemitem>.
</para>
<para>
<systemitem class="service">nova-conductor</systemitem>
returns the instance information.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> picks up the
instance information from the queue.
</para>
</listitem>
<listitem>
<!-- 12 -->
<para>
<systemitem class="service">nova-compute</systemitem> performs
the REST call by passing the auth-token to <systemitem
class="service">glance-api</systemitem>. Then, <systemitem
class="service">nova-compute</systemitem> uses the Image ID to
retrieve the Image URI from the Image Service, and loads the
image from the image storage.
</para>
</listitem>
<listitem>
<para>
<!-- 13 -->
<systemitem class="service">glance-api</systemitem> validates
the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> gets the
image metadata.
</para>
</listitem>
<listitem>
<para>
<!-- 14 -->
<systemitem class="service">nova-compute</systemitem> performs
the REST-call by passing the auth-token to Network API to
allocate and configure the network so that the instance gets
the IP address.
</para>
</listitem>
<listitem>
<!-- 15 -->
<para>
<systemitem class="service">neutron-server</systemitem>
validates the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem>
retrieves the network info.
</para>
</listitem>
<listitem>
<para>
<!-- 16 -->
<systemitem class="service">nova-compute</systemitem> performs
the REST call by passing the auth-token to Volume API to attach
volumes to the instance.
</para>
</listitem>
<listitem>
<para>
<!-- 17 -->
<systemitem class="service">cinder-api</systemitem> validates
the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> retrieves the
block storage info.
</para>
</listitem>
<listitem>
<para>
<systemitem class="service">nova-compute</systemitem>
generates data for the hypervisor driver and executes the
request on the hypervisor (via libvirt or API).
</para>
</listitem>
</orderedlist>
<figure>
<title>Nova VM provisioning</title>
<mediaobject>
<imageobject>
<imagedata fileref="figures/image02.png"/>
</imageobject>
</mediaobject>
</figure>
</chapter>