diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst index 669b5e3a..581ca904 100644 --- a/doc/source/architecture.rst +++ b/doc/source/architecture.rst @@ -38,7 +38,28 @@ but are not extensively tested upstream. .. figure:: /images/architecture.png :figwidth: 100% :align: center - :alt: OpenStack Glance Architecture + :alt: OpenStack Glance Architecture Diagram. + Consists of 5 main blocks: "Client" "Glance" "Keystone" + "Glance Store" and "Supported Storages". + Glance block exposes a REST API. The REST API makes use of the + AuthZ Middleware and a Glance Domain Controller, which contains + Auth, Notifier, Policy, Quota, Location and DB. The Glance Domain + Controller makes use of the Glance Store (which is external to the + Glance block), and (still within the Glance block) it makes use of + the Database Abstraction Layer, and (optionally) the Registry Layer. + The Registry Layer makes use of the Database Abstraction Layer. The + Database abstraction layer exclusively makes use of the Glance + Database. + The Client block makes use of the Rest API (which exists in the + Glance block) and the Keystone block. + The Glance Store block contains AuthN which makes use of the + Keystone block, and it also contains Glance Store Drivers, which + exclusively makes use of each of the storage systems in the + Supported Storages block. Within the Supported Storages block, + there exist the following storage systems, none of which make use + of anything else: Filesystem, Swift, S3, Ceph, "ellipses", Sheepdog. + A complete list is given by the currently available drivers in + glance_store/_drivers. .. centered:: Image 1. OpenStack Glance Architecture diff --git a/doc/source/database_architecture.rst b/doc/source/database_architecture.rst index 6e88a1a4..7a1b6d24 100644 --- a/doc/source/database_architecture.rst +++ b/doc/source/database_architecture.rst @@ -184,7 +184,63 @@ of an *Image* object. .. figure:: /images/glance_db.png :figwidth: 100% :align: center - :alt: Glance images DB schema + :alt: The glance database schema is depicted by 5 tables. + The table named Images has the following columns: + id: varchar(36); + name: varchar(255), nullable; + size: bigint(20), nullable; + status: varchar(30); + is_public: tinyint(1); + created_at: datetime; + updated_at: datetime, nullable; + deleted_at: datetime, nullable; + deleted: tinyint(1); + disk_format: varchar(20), nullable; + container_format: varchar(20), nullable; + checksum: varchar(32), nullable; + owner: varchar(255), nullable + min_disk: int(11); + min_ram: int(11); + protected: tinyint(1); and + virtual_size: bigint(20), nullable;. + The table named image_locations has the following columns: + id: int(11), primary; + image_id: varchar(36), refers to column named id in table Images; + value: text; + created_at: datetime; + updated_at: datetime, nullable; + deleted_at: datetime, nullable; + deleted: tinyint(1); + meta_data: text, nullable; and + status: varchar(30);. + The table named image_members has the following columns: + id: int(11), primary; + image_id: varchar(36), refers to column named id in table Images; + member: varchar(255); + can_share: tinyint(1); + created_at: datetime; + updated_at: datetime, nullable; + deleted_at: datetime, nullable; + deleted: tinyint(1); and + status: varchar(20;. + The table named image_tags has the following columns: + id: int(11), primary; + image_id: varchar(36), refers to column named id in table Images; + value: varchar(255); + created_at: datetime; + updated_at: datetime, nullable; + deleted_at: datetime, nullable; and + deleted: tinyint(1);. + The table named image_properties has the following columns: + id: int(11), primary; + image_id: varchar(36), refers to column named id in table Images; + name: varchar(255); + value: text, nullable; + created_at: datetime; + updated_at: datetime, nullable; + deleted_at: datetime, nullable; and + deleted: tinyint(1);. + .. centered:: Image 1. Glance images DB schema diff --git a/doc/source/domain_implementation.rst b/doc/source/domain_implementation.rst index a026d2ff..9bd5bf3a 100644 --- a/doc/source/domain_implementation.rst +++ b/doc/source/domain_implementation.rst @@ -24,8 +24,8 @@ Gateway and basic layers The domain model contains the following layers: #. :ref:`authorization` -#. :ref:`notifier` #. :ref:`property` +#. :ref:`notifier` #. :ref:`policy` #. :ref:`quota` #. :ref:`location` @@ -37,7 +37,27 @@ their locations: .. figure:: /images/glance_layers.png :figwidth: 100% :align: center - :alt: Image domain layers + :alt: From top to bottom, the stack consists of the Router and REST API, + which are above the domain implementation. The Auth, Property + Protection (optional), Notifier, Policy, Quota, + Location, and Database represent the domain implementation. + The Registry (optional) and Data Access sit below the domain + implementation. Further, the Client block calls the Router; + the Location block calls the Glance Store, and the Data Access + layer calls the DBMS. + Additional information conveyed in the image is the location in + the Glance code of the various components: + Router: api/v2/router.py + REST API: api/v2/* + Auth: api/authorization.py + Property Protection: api/property_protections.py + Notifier: notifier.py + Policy: api/policy.py + Quota: quota/__init__.py + Location: location.py + DB: db/__init__.py + Registry: registry/v2/* + Data Access: db/sqlalchemy/api.py .. _authorization: diff --git a/doc/source/statuses.rst b/doc/source/statuses.rst index b3d70865..44dc5379 100644 --- a/doc/source/statuses.rst +++ b/doc/source/statuses.rst @@ -65,7 +65,41 @@ Images in Glance can be in one the following statuses: .. figure:: /images/image_status_transition.png :figwidth: 100% :align: center - :alt: Image status transition + :alt: The states consist of: + "queued", "saving", "active", "pending_delete", "deactivated", + "killed", and "deleted". + The transitions consist of: + An initial transition to the "queued" state called "create image". + A transition from the "queued" state to the "active" state + called "add location". + A transition from the "queued" state to the "saving" state + called "upload". + A transition from the "queued" state to the "deleted" state + called "delete". + A transition from the "saving" state to the "active" state + called "upload succeeded". + A transition from the "saving" state to the "deleted" state + called "delete". + A transition from the "saving" state to the "killed" state + called "[v1] upload fail". + A transition from the "saving" state to the "queued" state + called "[v2] upload fail". + A transition from the "active" state to the "deleted" state + called "delete". + A transition from the "active" state to the "pending_delete" state + called "delayed delete". + A transition from the "active" state to the "deactivated" state + called "deactivate". + A transition from the "killed" state to the "deleted" state + called "deleted". + A transition from the "pending_delete" state to the "deleted" state + called "after scrub time". + A transition from the "deactivated" state to the "deleted" state + called "delete". + A transition from the "deactivated" state to the "active" state + called "reactivate". + There are no transitions out of the "deleted" state. + This is a representation of how the image move from one status to the next.