Merge "Software Metadata Definitions"
This commit is contained in:
commit
7d43dc3087
225
specs/kilo/software-metadefs.rst
Normal file
225
specs/kilo/software-metadefs.rst
Normal 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
|
Loading…
Reference in New Issue
Block a user