diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst new file mode 100644 index 0000000000..880b921ab8 --- /dev/null +++ b/doc/source/architecture.rst @@ -0,0 +1,58 @@ +.. + Copyright 2015 OpenStack Foundation + All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may obtain + a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations + under the License. + +================== +Basic architecture +================== + +OpenStack Glance has a client-server architecture and provides a user +REST API through which requests to the server are performed. + +Internal server operations are managed by a Glance Domain Controller +divided into layers. Each layer implements its own task. + +All the files operations are performed using glance_store library +which is responsible for interaction with external storage back ends or +local filesystem, and provides a uniform interface to access. + +Glance uses an sql-based central database (Glance DB) that is shared +with all the components in the system. + +.. figure:: /images/architecture.png + :figwidth: 100% + :align: center + :alt: OpenStack Glance Architecture + +.. centered:: Image 1. OpenStack Glance Architecture + +The Glance architecture consists of several components: + +* **A client** — any application that uses Glance server. + +* **REST API** — exposes Glance functionality via REST. + +* **Database Abstraction Layer (DAL)** — an application programming interface + which unifies the communication between Glance and databases. + +* **Glance Domain Controller** — middleware that implements the main + Glance functionalities: authorization, notifications, policies, + database connections. + +* **Glance Store** — organizes interactions between Glance and various + data stores. + +* **Registry Layer** — optional layer organizing secure communication between + the domain and the DAL by using a seperate service. diff --git a/doc/source/images/architecture.png b/doc/source/images/architecture.png new file mode 100644 index 0000000000..2eacef98ac Binary files /dev/null and b/doc/source/images/architecture.png differ diff --git a/doc/source/images_src/architecture.graphml b/doc/source/images_src/architecture.graphml new file mode 100644 index 0000000000..ae84dbdce2 --- /dev/null +++ b/doc/source/images_src/architecture.graphml @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Keystone + + + + + + + + + + Folder 2 + + + + + + + + + + + + + + + + API + + + + + + + + + + + + + + + + + + + + + + Glance + + + + + + + + + + Folder 3 + + + + + + + + + + + + + + + + REST API + + + + + + + + + + + + + + + + + Glance DB + + + + + + + + + + + + + + + + + + + + Database +Abstraction +Layer + + + + + + + + + + + + + + + + + Glance +Domain +Controller + Auth +Notifier +Policy +Quota +Location +DB + + + + + + + + + + + + + + + + + + + AuthZ + + + + + + + + + + + + + + + + + Registry +Layer + + + + + + + + + + + + + + + + + + + + + + Glance Store + + + + + + + + + + Folder 4 + + + + + + + + + + + + + + + + Glance Store Drivers + + + + + + + + + + + + + + + + + + AuthN/AuthZ + + + + + + + + + + + + + + + + + + + + + + Supported Storages + + + + + + + + + + Folder 5 + + + + + + + + + + + + + + + + Swift + + + + + + + + + + + + + + + + + + + + S3 + + + + + + + + + + + + + + + + + + + + Ceph + + + + + + + + + + + + + + + + + + + + Sheepdog + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + Filesystem + + + + + + + + + + + + + + + + + + + + + + + + + A client + + + + + + + + + + Folder 7 + + + + + + + + + + + + + + + + AuthN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?xml version="1.0" encoding="utf-8"?> +<svg version="1.1" + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + x="0px" y="0px" width="40px" height="48px" viewBox="0 0 40 48" enable-background="new 0 0 40 48" xml:space="preserve"> +<defs> +</defs> +<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="655.0938" x2="409.4502" y2="655.0938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#4D4D4D"/> + <stop offset="0.0558" style="stop-color:#5F5F5F"/> + <stop offset="0.2103" style="stop-color:#8D8D8D"/> + <stop offset="0.3479" style="stop-color:#AEAEAE"/> + <stop offset="0.4623" style="stop-color:#C2C2C2"/> + <stop offset="0.5394" style="stop-color:#C9C9C9"/> + <stop offset="0.6247" style="stop-color:#C5C5C5"/> + <stop offset="0.7072" style="stop-color:#BABABA"/> + <stop offset="0.7885" style="stop-color:#A6A6A6"/> + <stop offset="0.869" style="stop-color:#8B8B8B"/> + <stop offset="0.9484" style="stop-color:#686868"/> + <stop offset="1" style="stop-color:#4D4D4D"/> +</linearGradient> +<path fill="url(#SVGID_1_)" d="M19.625,37.613C8.787,37.613,0,35.738,0,33.425v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,35.738,30.464,37.613,19.625,37.613z"/> +<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="649.0938" x2="409.4502" y2="649.0938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#B3B3B3"/> + <stop offset="0.0171" style="stop-color:#B6B6B6"/> + <stop offset="0.235" style="stop-color:#D7D7D7"/> + <stop offset="0.4168" style="stop-color:#EBEBEB"/> + <stop offset="0.5394" style="stop-color:#F2F2F2"/> + <stop offset="0.6579" style="stop-color:#EEEEEE"/> + <stop offset="0.7724" style="stop-color:#E3E3E3"/> + <stop offset="0.8853" style="stop-color:#CFCFCF"/> + <stop offset="0.9965" style="stop-color:#B4B4B4"/> + <stop offset="1" style="stop-color:#B3B3B3"/> +</linearGradient> +<path fill="url(#SVGID_2_)" d="M19.625,37.613c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.927-18.396,3.927 + c-9.481,0-17.396-1.959-18.396-3.927l-1.229,2C0,35.738,8.787,37.613,19.625,37.613z"/> +<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="371.4297" y1="646" x2="408.2217" y2="646" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#C9C9C9"/> + <stop offset="1" style="stop-color:#808080"/> +</linearGradient> +<ellipse fill="url(#SVGID_3_)" cx="19.625" cy="31.425" rx="18.396" ry="3.926"/> +<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="641.0938" x2="409.4502" y2="641.0938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#4D4D4D"/> + <stop offset="0.0558" style="stop-color:#5F5F5F"/> + <stop offset="0.2103" style="stop-color:#8D8D8D"/> + <stop offset="0.3479" style="stop-color:#AEAEAE"/> + <stop offset="0.4623" style="stop-color:#C2C2C2"/> + <stop offset="0.5394" style="stop-color:#C9C9C9"/> + <stop offset="0.6247" style="stop-color:#C5C5C5"/> + <stop offset="0.7072" style="stop-color:#BABABA"/> + <stop offset="0.7885" style="stop-color:#A6A6A6"/> + <stop offset="0.869" style="stop-color:#8B8B8B"/> + <stop offset="0.9484" style="stop-color:#686868"/> + <stop offset="1" style="stop-color:#4D4D4D"/> +</linearGradient> +<path fill="url(#SVGID_4_)" d="M19.625,23.613C8.787,23.613,0,21.738,0,19.425v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,21.738,30.464,23.613,19.625,23.613z"/> +<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="635.0938" x2="409.4502" y2="635.0938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#B3B3B3"/> + <stop offset="0.0171" style="stop-color:#B6B6B6"/> + <stop offset="0.235" style="stop-color:#D7D7D7"/> + <stop offset="0.4168" style="stop-color:#EBEBEB"/> + <stop offset="0.5394" style="stop-color:#F2F2F2"/> + <stop offset="0.6579" style="stop-color:#EEEEEE"/> + <stop offset="0.7724" style="stop-color:#E3E3E3"/> + <stop offset="0.8853" style="stop-color:#CFCFCF"/> + <stop offset="0.9965" style="stop-color:#B4B4B4"/> + <stop offset="1" style="stop-color:#B3B3B3"/> +</linearGradient> +<path fill="url(#SVGID_5_)" d="M19.625,23.613c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926 + c-9.481,0-17.396-1.959-18.396-3.926l-1.229,2C0,21.738,8.787,23.613,19.625,23.613z"/> +<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="371.4297" y1="632" x2="408.2217" y2="632" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#C9C9C9"/> + <stop offset="1" style="stop-color:#808080"/> +</linearGradient> +<ellipse fill="url(#SVGID_6_)" cx="19.625" cy="17.426" rx="18.396" ry="3.926"/> +<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="627.5938" x2="409.4502" y2="627.5938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#4D4D4D"/> + <stop offset="0.0558" style="stop-color:#5F5F5F"/> + <stop offset="0.2103" style="stop-color:#8D8D8D"/> + <stop offset="0.3479" style="stop-color:#AEAEAE"/> + <stop offset="0.4623" style="stop-color:#C2C2C2"/> + <stop offset="0.5394" style="stop-color:#C9C9C9"/> + <stop offset="0.6247" style="stop-color:#C5C5C5"/> + <stop offset="0.7072" style="stop-color:#BABABA"/> + <stop offset="0.7885" style="stop-color:#A6A6A6"/> + <stop offset="0.869" style="stop-color:#8B8B8B"/> + <stop offset="0.9484" style="stop-color:#686868"/> + <stop offset="1" style="stop-color:#4D4D4D"/> +</linearGradient> +<path fill="url(#SVGID_7_)" d="M19.625,10.113C8.787,10.113,0,8.238,0,5.925v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,8.238,30.464,10.113,19.625,10.113z"/> +<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="370.2002" y1="621.5938" x2="409.4502" y2="621.5938" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#B3B3B3"/> + <stop offset="0.0171" style="stop-color:#B6B6B6"/> + <stop offset="0.235" style="stop-color:#D7D7D7"/> + <stop offset="0.4168" style="stop-color:#EBEBEB"/> + <stop offset="0.5394" style="stop-color:#F2F2F2"/> + <stop offset="0.6579" style="stop-color:#EEEEEE"/> + <stop offset="0.7724" style="stop-color:#E3E3E3"/> + <stop offset="0.8853" style="stop-color:#CFCFCF"/> + <stop offset="0.9965" style="stop-color:#B4B4B4"/> + <stop offset="1" style="stop-color:#B3B3B3"/> +</linearGradient> +<path fill="url(#SVGID_8_)" d="M19.625,10.113c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926 + c-9.481,0-17.396-1.959-18.396-3.926L0,5.925C0,8.238,8.787,10.113,19.625,10.113z"/> +<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="371.4297" y1="618.5" x2="408.2217" y2="618.5" gradientTransform="matrix(1 0 0 1 -370.2002 -614.5742)"> + <stop offset="0" style="stop-color:#C9C9C9"/> + <stop offset="1" style="stop-color:#808080"/> +</linearGradient> +<ellipse fill="url(#SVGID_9_)" cx="19.625" cy="3.926" rx="18.396" ry="3.926"/> +<path opacity="0.24" fill="#FFFFFF" enable-background="new " d="M31.291,46.792c0,0-4.313,0.578-7.249,0.694 + C20.917,47.613,15,47.613,15,47.613l-2.443-10.279l-0.119-2.283l-1.231-1.842L9.789,23.024l-0.082-0.119L9.3,20.715l-1.45-1.44 + L5.329,8.793c0,0,5.296,0.882,7.234,1.07s8.375,0.25,8.375,0.25l3,9.875l-0.25,1.313l1.063,2.168l2.312,9.644l-0.375,1.875 + l1.627,2.193L31.291,46.792z"/> +</svg> + + <?xml version="1.0" encoding="utf-8"?> +<svg version="1.1" + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + x="0px" y="0px" width="41px" height="48px" viewBox="-0.875 -0.887 41 48" enable-background="new -0.875 -0.887 41 48" + xml:space="preserve"> +<defs> +</defs> +<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-979.1445" x2="682.0508" y2="-979.1445" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#3C89C9"/> + <stop offset="0.1482" style="stop-color:#60A6DD"/> + <stop offset="0.3113" style="stop-color:#81C1F0"/> + <stop offset="0.4476" style="stop-color:#95D1FB"/> + <stop offset="0.5394" style="stop-color:#9CD7FF"/> + <stop offset="0.636" style="stop-color:#98D4FD"/> + <stop offset="0.7293" style="stop-color:#8DCAF6"/> + <stop offset="0.8214" style="stop-color:#79BBEB"/> + <stop offset="0.912" style="stop-color:#5EA5DC"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_1_)" d="M19.625,36.763C8.787,36.763,0,34.888,0,32.575v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,34.888,30.464,36.763,19.625,36.763z"/> +<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-973.1445" x2="682.0508" y2="-973.1445" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#9CD7FF"/> + <stop offset="0.0039" style="stop-color:#9DD7FF"/> + <stop offset="0.2273" style="stop-color:#BDE5FF"/> + <stop offset="0.4138" style="stop-color:#D1EEFF"/> + <stop offset="0.5394" style="stop-color:#D9F1FF"/> + <stop offset="0.6155" style="stop-color:#D5EFFE"/> + <stop offset="0.6891" style="stop-color:#C9E7FA"/> + <stop offset="0.7617" style="stop-color:#B6DAF3"/> + <stop offset="0.8337" style="stop-color:#9AC8EA"/> + <stop offset="0.9052" style="stop-color:#77B0DD"/> + <stop offset="0.9754" style="stop-color:#4D94CF"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_2_)" d="M19.625,36.763c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.927-18.396,3.927 + c-9.481,0-17.396-1.959-18.396-3.927l-1.229,2C0,34.888,8.787,36.763,19.625,36.763z"/> +<path fill="#3C89C9" d="M19.625,26.468c10.16,0,19.625,2.775,19.625,2.775c-0.375,2.721-5.367,5.438-19.554,5.438 + c-12.125,0-18.467-2.484-19.541-4.918C-0.127,29.125,9.465,26.468,19.625,26.468z"/> +<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-965.6948" x2="682.0508" y2="-965.6948" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#3C89C9"/> + <stop offset="0.1482" style="stop-color:#60A6DD"/> + <stop offset="0.3113" style="stop-color:#81C1F0"/> + <stop offset="0.4476" style="stop-color:#95D1FB"/> + <stop offset="0.5394" style="stop-color:#9CD7FF"/> + <stop offset="0.636" style="stop-color:#98D4FD"/> + <stop offset="0.7293" style="stop-color:#8DCAF6"/> + <stop offset="0.8214" style="stop-color:#79BBEB"/> + <stop offset="0.912" style="stop-color:#5EA5DC"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_3_)" d="M19.625,23.313C8.787,23.313,0,21.438,0,19.125v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,21.438,30.464,23.313,19.625,23.313z"/> +<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-959.6948" x2="682.0508" y2="-959.6948" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#9CD7FF"/> + <stop offset="0.0039" style="stop-color:#9DD7FF"/> + <stop offset="0.2273" style="stop-color:#BDE5FF"/> + <stop offset="0.4138" style="stop-color:#D1EEFF"/> + <stop offset="0.5394" style="stop-color:#D9F1FF"/> + <stop offset="0.6155" style="stop-color:#D5EFFE"/> + <stop offset="0.6891" style="stop-color:#C9E7FA"/> + <stop offset="0.7617" style="stop-color:#B6DAF3"/> + <stop offset="0.8337" style="stop-color:#9AC8EA"/> + <stop offset="0.9052" style="stop-color:#77B0DD"/> + <stop offset="0.9754" style="stop-color:#4D94CF"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_4_)" d="M19.625,23.313c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926 + c-9.481,0-17.396-1.959-18.396-3.926l-1.229,2C0,21.438,8.787,23.313,19.625,23.313z"/> +<path fill="#3C89C9" d="M19.476,13.019c10.161,0,19.625,2.775,19.625,2.775c-0.375,2.721-5.367,5.438-19.555,5.438 + c-12.125,0-18.467-2.485-19.541-4.918C-0.277,15.674,9.316,13.019,19.476,13.019z"/> +<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-952.4946" x2="682.0508" y2="-952.4946" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#3C89C9"/> + <stop offset="0.1482" style="stop-color:#60A6DD"/> + <stop offset="0.3113" style="stop-color:#81C1F0"/> + <stop offset="0.4476" style="stop-color:#95D1FB"/> + <stop offset="0.5394" style="stop-color:#9CD7FF"/> + <stop offset="0.636" style="stop-color:#98D4FD"/> + <stop offset="0.7293" style="stop-color:#8DCAF6"/> + <stop offset="0.8214" style="stop-color:#79BBEB"/> + <stop offset="0.912" style="stop-color:#5EA5DC"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_5_)" d="M19.625,10.113C8.787,10.113,0,8.238,0,5.925v10c0,2.313,8.787,4.188,19.625,4.188 + c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,8.238,30.464,10.113,19.625,10.113z"/> +<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-946.4946" x2="682.0508" y2="-946.4946" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#9CD7FF"/> + <stop offset="0.0039" style="stop-color:#9DD7FF"/> + <stop offset="0.2273" style="stop-color:#BDE5FF"/> + <stop offset="0.4138" style="stop-color:#D1EEFF"/> + <stop offset="0.5394" style="stop-color:#D9F1FF"/> + <stop offset="0.6155" style="stop-color:#D5EFFE"/> + <stop offset="0.6891" style="stop-color:#C9E7FA"/> + <stop offset="0.7617" style="stop-color:#B6DAF3"/> + <stop offset="0.8337" style="stop-color:#9AC8EA"/> + <stop offset="0.9052" style="stop-color:#77B0DD"/> + <stop offset="0.9754" style="stop-color:#4D94CF"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<path fill="url(#SVGID_6_)" d="M19.625,10.113c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926 + c-9.481,0-17.396-1.959-18.396-3.926L0,5.925C0,8.238,8.787,10.113,19.625,10.113z"/> +<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="644.0293" y1="-943.4014" x2="680.8223" y2="-943.4014" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)"> + <stop offset="0" style="stop-color:#9CD7FF"/> + <stop offset="1" style="stop-color:#3C89C9"/> +</linearGradient> +<ellipse fill="url(#SVGID_7_)" cx="19.625" cy="3.926" rx="18.396" ry="3.926"/> +<path opacity="0.24" fill="#FFFFFF" enable-background="new " d="M31.04,45.982c0,0-4.354,0.664-7.29,0.781 + c-3.125,0.125-8.952,0-8.952,0l-2.384-10.292l0.044-2.108l-1.251-1.154L9.789,23.024l-0.082-0.119L9.5,20.529l-1.65-1.254 + L5.329,8.793c0,0,4.213,0.903,7.234,1.07s8.375,0.25,8.375,0.25l3,9.875l-0.25,1.313l1.063,2.168l2.312,9.645l-0.521,1.416 + l1.46,1.834L31.04,45.982z"/> +</svg> + + + + diff --git a/doc/source/index.rst b/doc/source/index.rst index 283a9033f0..37aabace98 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -44,12 +44,13 @@ be found on the `OpenStack wiki`_. .. _`OpenStack wiki`: http://wiki.openstack.org -Concepts -======== +Glance Background Concepts +========================== .. toctree:: :maxdepth: 1 + architecture identifiers statuses formats