12ca26f503
Related blueprint: introspection-of-images Change-Id: Iab766b2fff5ff08b06ce02a09ca03553e27f0cb2
182 lines
4.2 KiB
ReStructuredText
182 lines
4.2 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
===========================
|
|
Introspection of Images
|
|
===========================
|
|
|
|
https://blueprints.launchpad.net/glance/+spec/introspection-of-images
|
|
|
|
Several image formats include metadata inside the image data. This spec
|
|
proposes that Glance expose that metadata through introspection of the image.
|
|
For example, we can read the metadata from a ``vmdk`` formatted image to know
|
|
that the disk type of the image is "streamOptimized". Allowing Glance to
|
|
perform the introspection removes the burden from the administrator. Exposing
|
|
this metadata also helps the consumer of the image; Nova's workflow is very
|
|
different based on the disk type of the image.
|
|
|
|
|
|
Problem description
|
|
===================
|
|
|
|
Several image formats include metadata inside the image data. A stream
|
|
optimized ``vmdk`` image could be introspected like so:
|
|
|
|
.. code::
|
|
|
|
$ head -20 so-disk.vmdk
|
|
|
|
# Disk DescriptorFile
|
|
version=1
|
|
CID=d5a0bce5
|
|
parentCID=ffffffff
|
|
createType="streamOptimized"
|
|
|
|
# Extent description
|
|
RDONLY 209714 SPARSE "generated-stream.vmdk"
|
|
|
|
# The Disk Data Base
|
|
#DDB
|
|
|
|
ddb.adapterType = "buslogic"
|
|
ddb.geometry.cylinders = "102"
|
|
ddb.geometry.heads = "64"
|
|
ddb.geometry.sectors = "32"
|
|
ddb.virtualHWVersion = "4"
|
|
|
|
When a user of the image looks at the metadata they will see important
|
|
information like the required disk type, "streamOptimized". Extracting the
|
|
metadata in Glance and exposing it through Glance's API, means that
|
|
administrators and image users alike do not need to perform the introspection
|
|
themselves. Consumers like Nova will have very different workflows based on
|
|
disk type alone and could also optimize the rest of its workflow based on
|
|
other image metadata.
|
|
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
Using `Glance's Asynchronous Workers`_, we can extract the image metadata
|
|
without requiring a separate node and without suffering significant
|
|
performance degradation.
|
|
|
|
.. _Glance's Asynchronous Workers:
|
|
https://blueprints.launchpad.net/glance/+spec/async-glance-workers
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
A separate worker node could ostensibly be controlled to prevent degradation
|
|
on the Glance API nodes but is an unnecessary addition to the architecture.
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
None
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
None
|
|
|
|
Security impact
|
|
---------------
|
|
|
|
None
|
|
|
|
Notifications impact
|
|
--------------------
|
|
|
|
None
|
|
|
|
Other end user impact
|
|
---------------------
|
|
|
|
None
|
|
|
|
Performance Impact
|
|
------------------
|
|
|
|
Based on the maximum number of workers and the size that the administrator has
|
|
configured for the introspection workspace, performance could be negatively
|
|
affected if the operator misconfigures their maximum number of workers and
|
|
allocated workspace.
|
|
|
|
Other deployer impact
|
|
---------------------
|
|
|
|
When configuring this feature, operators will need to know the average size of
|
|
the images that they are managing and appropriately configure the
|
|
``max_workers`` setting and an appropriate amount of space for the workers to
|
|
use.
|
|
|
|
Developer impact
|
|
----------------
|
|
|
|
None
|
|
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
flaper87
|
|
|
|
Other contributors:
|
|
jokke\_
|
|
|
|
Reviewers
|
|
---------
|
|
|
|
Core reviewer(s):
|
|
nikhil-komawar
|
|
kragniz
|
|
icordasc
|
|
|
|
Work Items
|
|
----------
|
|
|
|
- Create specific workers for different introspection tasks
|
|
|
|
- Create workflows for tasks
|
|
|
|
- Update configuration files with additions
|
|
|
|
- Update configuration documentation
|
|
|
|
|
|
Dependencies
|
|
============
|
|
|
|
This depends on `Glance's Asynchronous Workers`_.
|
|
|
|
|
|
Testing
|
|
=======
|
|
|
|
Unit testing will be needed for the introspection tasks and for the new task
|
|
flows.
|
|
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
This may have an impact on the upgrade and installation parts of the
|
|
documentation. For operators upgrading, they'll need to understand how to
|
|
properly configure a system for image introspection. For new users, they'll
|
|
need to be warned about appropriately allocating space for the workers to use
|
|
and possibly choosing a more conservative maximum worker number than is
|
|
default until they can determine the appropriate number.
|
|
|
|
|
|
References
|
|
==========
|
|
|
|
None
|