glance-specs/specs/kilo/software-metadefs.rst
Travis Tripp 505573a345 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
2015-01-22 14:56:49 -07:00

6.9 KiB

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