Software Metadata Definitions

The spec will provide a base library of metadata definitions for
various common software products, components, and libraries that
may exist on particular image (or volume or instance). These
metadata definitions will make it easier for end users and
admins to easily describe the software and its properties.
This information will enable an improved and faster user
experience for applying software metadata, searching based
on software metadata, and viewing the software information
about an image.

Various improvements in horizon are underway to take
advantage of this metadata. For example, a user launching
an instance will be able to expand the image row to see
additional information about the image.  This will include
providing the metadata definition for properties on the image.
This same information will also be visible from the image and
instance details page.

Implements: blueprint software-metadefs
Change-Id: I70c13d1c903ef4b447eaaeb4c3af40a4cbfb3c71
This commit is contained in:
Travis Tripp 2015-01-16 14:36:43 -07:00
parent 224ade269d
commit 505573a345

View File

@ -0,0 +1,225 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Software Metadata Definitions
==========================================
Include the URL of your launchpad blueprint:
https://blueprints.launchpad.net/glance/+spec/software-metadefs
The spec will provide a base library of metadata definitions for various
common software products, components, and libraries that may exist on
particular image (or volume or instance). These metadata definitions will
make it easier for end users and admins to easily describe the software and
its properties. This information will enable an improved and faster user
experience for applying software metadata, searching based on software
metadata, and viewing the software information about an image.
Various improvements in horizon are underway to take advantage of this
metadata. For example, a user launching an instance will be able to expand
the image row to see addition information about the image. This will include
providing the metadata definition for properties on the image. This same
information will also be visible from the image and instance details page.
The following blueprint is for launch instance:
https://blueprints.launchpad.net/horizon/+spec/launch-instance-redesign
The following screenshot mockup provides an example from the instance details:
https://wiki.openstack.org/w/images/3/37/Instance-details-mock-january-2015.png
The following blueprint is for instance details (see source tab):
https://blueprints.launchpad.net/horizon/+spec/instance-details-redesign
Additional horizon blueprints are being prepared that will display metadata,
but are still undergoing collaborative UX design first.
Problem description
===================
In Juno, the metadata definitions catalog was introduced with a primary
intent to improve collaboration on the metadata that can be applied to
different resources such as images, flavors, host aggregates,
and volumes. The primary development focus in Juno was on what is currently
system metadata in OpenStack (properties that affect scheduling and driver
behavior).
The metadata fields on these same resources can also be used to provide
additional, rich information that describes the resource for user
understanding and search. This information can be leveraged to improve
instance launching, application catalogs, and a variety of other user
interaction points.
Current methodologies present and proposed in OpenStack require repetitive
descriptions, categorization, imagery, and attributes to be applied on each
instance of a resource.
For example, if multiple images contain Apache then each image will require
the user to type in information about Apache, will require them to provide
some sort of categorization tag, and will not have any common "template" like
fields for the software which can be used for faceted search.
This leads to redundancy, spelling mistakes, inconsistency as well as a
general lack of ability to present a rich UI experience. In addition,
there is no common set of base definitions for software that can be shared
across deployments.
Proposed change
===============
The implementation of this spec will provide a base library of metadata
definitions for various common software products, components,
and libraries that may exist on particular image (or volume or instance).
The following are examples of the type of commonly used software that will
be included:
* Databases such as MySQL, PostgreSQL, Oracle, MongoDB, etc.
* Web servers such as Apache, nginx, IIS
* Runtimes like php, java, python, etc.
The review process of the actual proposed definitions will allow for the
community to suggest additional software to include or to suggest removing
certain definitions.
These metadata definitions will make it easier for end users and admins to
easily describe the software and its properties. This information will
enable an improved and faster user experience for applying software
metadata, searching based on software metadata, and viewing the software
information about an image.
Users of the glance client / cli will be able to lookup the available
definitions just like they do today. So the below methodology that can be
done to look up something like virtual CPU topology properties will work for
the software definitions::
glance --os-image-api-version 2 md-namespace-list
glance --os-image-api-version 2 md-namespace-show OS::Compute::VirtCPUTopology
glance --os-image-api-version 2 md-property-show OS::Compute::VirtCPUTopology cpu_maxsockets
The metadata definitions will be included as additional json files in the
etc/metadefs directory just like the existing example system metadata
definitions.
Alternatives
------------
As every single image, artifact, or other type of resource is added to the
system, the admin and users could be responsible for putting a good description
that is consistent with other descriptions, could try to remember all the
right tags to add, or could try to remember all the same properties to
upload to it. This leads to redundancy, spelling mistakes,
inconsistency as well as a general lack of ability to present a rich UI
experience. It also doesn't enable predictable search facets for rich search
experience.
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
No impacts glance client.
Work is being done in horizon to take better advantage of these definitions.
Performance Impact
------------------
None.
Other deployer impact
---------------------
This spec will provide deployers with a base set of metadata definitions for
software similar to what they are provided for system metadata definitions.
They can choose to either use or not use the base definitions provided in this
spec.
In Juno, example software definitions were not provided. To upgrade,
they will need to deploy these files to etc/glance/metadefs and then call
glance-manage db_load_metadefs. This call automatically loads new namespaces
that aren't already loaded.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
travis-tripp
Other contributors:
lakshmi-sampath
murali-sundar
Reviewers
---------
Core reviewer(s):
nikhil-komawar
<launchpad-id or None>
Other reviewer(s):
wayne-okuma
murali-sundar
Work Items
----------
Provide definition files for different categories of software.
- Databases
- Web servers
- Runtime environments
- More
Dependencies
============
None
Testing
=======
Existing code ensures that metadata definitions are loaded properly.
Documentation Impact
====================
Possibly update docs to talk about the base software definitions provided.
References
==========
http://docs.openstack.org/developer/glance/metadefs-concepts.html